在做ML或DL之前都必須先把資料倒進Python,說到從Elasticsearch把資料倒進Python,就必須介紹到elasticsearch.py,基本上跟Elasticsearch的API一樣,只要符合Query Domain Specific Language(Query DSL)格式就沒有問題了,對熟悉ELK的大大們來說,轉接到Python簡直輕而易舉!!(我不是大大,所以我不熟QAQ)
主要API是依靠Query DSL來向Elasticsearch Server索取資料,最基礎的Query DSL格式如下,篩選user
等於kimchy
的項目term
,只列出從0到第10筆,透過替換term
可以做到各種篩選:
{
"from" : 0, "size" : 10,
"query" : {
"term" : { "user" : "kimchy" }
}
}
下面列出我有使用到的Query,提供給各位參考,主要是列出從2018/10/8往前1個禮拜的資料,從第0筆開始只列出10000筆資料,這邊主要是為了一次提出10000筆資料來塞入Python,之後再做其他處理:
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts=[ELASTICSEARCH_IP]) # ELASTICSEARCH_IP is the ip of your Elasticsearch Server.
query_str = '{"query":{"range":{"event_data.UtcTime":{"gte":"2018-10-08", "lte":"2018-10-15"}}}}'
res = es.search(index=index_name, body=query_str, from_=0, size=10000) # DON'T SET SIZE=100000
print(res['hits']['hits'])